package com.crawler.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 定时任务实体类
 * 用于定时执行爬虫任务
 */
@Data
@TableName("scheduled_task")
public class ScheduledTask {

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 任务名称
     */
    private String name;

    /**
     * 任务描述
     */
    private String description;

    /**
     * 关联的爬虫任务ID
     */
    private Long crawlerTaskId;

    /**
     * Cron表达式
     */
    private String cronExpression;

    /**
     * 任务类型
     * (ONCE: 一次性, RECURRING: 重复执行)
     */
    private String type;

    /**
     * 开始时间
     */
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    private LocalDateTime endTime;

    /**
     * 状态
     * (PENDING: 待处理, ACTIVE: 活跃, PAUSED: 已暂停, COMPLETED: 已完成, EXPIRED: 已过期)
     */
    private String status;

    /**
     * 通知类型
     * (NONE: 无通知, EMAIL: 邮件, SMS: 短信, WEBHOOK: 网络钩子)
     */
    private String notificationType;

    /**
     * 通知目标
     * (根据通知类型，可以是邮箱地址、手机号或URL)
     */
    private String notificationTarget;

    /**
     * 通知条件
     * (SUCCESS: 成功时, FAILURE: 失败时, ALWAYS: 总是)
     */
    private String notificationCondition;

    /**
     * 最后执行时间
     */
    private LocalDateTime lastExecuteTime;

    /**
     * 下次执行时间
     */
    private LocalDateTime nextExecuteTime;

    /**
     * 执行次数
     */
    private Integer executeCount;

    /**
     * 成功次数
     */
    private Integer successCount;

    /**
     * 失败次数
     */
    private Integer failCount;

    /**
     * 创建用户ID
     */
    private Long createdBy;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
} 
